package com.wufeng.mycode;

/**
 * 与构造方法同级的代码块 优先于 构造方法
 * 静态方法在方法加载的时候执行，只执行一次
 */
public class FatherAndSonCodeBlock {
    public static void main(String[] args) {
        System.out.println("主类：main方法");
        System.out.println("================");
        new Son();
        System.out.println("================");
        new Son();
        System.out.println("================");
        new Father();
    }

}

class Father {
    {
        System.out.println("父类：代码块 1111");
    }

    Father() {
        System.out.println("父类：构造方法 2222");
    }

    static {
        System.out.println("父类：静态代码块 33333");
    }

    {
        System.out.println("父类：代码块 4444");
    }
}

class Son extends Father {
    {
        System.out.println("子类：代码块 1111");
    }

    Son() {
        System.out.println("子类：构造方法 2222");
    }

    static {
        System.out.println("子类：静态代码块 33333");
    }

    {
        System.out.println("子类：代码块 4444");
    }
}